75 - 6 Hauptspeicherfragmentierung [ID:27651]
50 von 128 angezeigt

Nun bei den Verfahrensweisen haben wir ja gesehen, dass so was wie Speicherverschnitt

auftreten kann. Also es bleiben Reste übrig und die Frage ist, ob denn diese Reste überhaupt

verwertbar sind und wenn sie nicht verwertbar sind, wie problematisch denn das wäre und wenn

man das als ein Problem halt aufpasst, welche Lösung man sozusagen da halt hat. Das bringt uns eben zu

dem allgemeinen Konzept des Speicherverschnitts und da werden wir im ersten Teil mal auf die

Fragmentierung an sich, den Verschnitt, wie er entsteht, nochmal eingehen und dann sehen wir

zwei Techniken, Verschmelzung und Kompaktifizierung, die dazu helfen, einmal die Fragmentierung zu

minimieren oder sie auch komplett aufzulösen, indem man kompaktifiziert. Da war dazu dann später mehr.

Nun, es geht um eine Bruchstückbildung. Verschnitt ist eigentlich immer ein Speicher, der zu viel

zugeteilt worden ist und möglicherweise dadurch auch nicht nutzbar ist, weil er wurde ja nicht

angefordert in der Größe, wie er denn zugeteilt wurde. Das ist die eine Sicht. Man kann es denn so

sehen, dass eben dieser nicht nutzbare Bereich, das was zu viel zugeteilt worden ist, als Abfall

letztendlich in Erscheinung tritt und dass man damit auch eine gewisse Speicherverschwendung

einfach in Kauf nehmen muss in seinem System. Nun sieht diese Bruchstückbildung durchaus sehr

differenziert aus. Je nach Adressraumkonzept und je nach Zuteilungsverfahren gibt es jetzt

unterschiedliche Formen der Ausprägung dieser Fragmentierung, die halt hier existiert. Wir

sprechen von der sogenannten internen Fragmentierung, wenn wir etwa seitennummerierte

Adressräume haben oder etwa das Halbierungsverfahren. Da vergeben wir ja immer ein

Seitenvielfaches an Speicher. Die Löcher müssen dann auch entsprechend ein Seitenvielfaches von

der Größe her ausmachen. Das kann also sein, dass wir einfach eine anfordernde Größe haben,

die ist kleiner als das dann zugeteilte Stück. Das ist dann sehr offensichtlich bei der

Seitennummerierung. Das gilt aber auch bei dem Halbierungsverfahren. Und da haben wir einen

lokalen Verschnitt, denn der Bereich, der zugeteilt wird, der wird auch in diesem Adressraum des

Prozesses eingebunden. Und wenn wir jetzt seitennummerierte Adressräume haben,

da werden dann die beiden aufgrund einer Speicheranforderung, wenn die erfüllbar ist,

Vielfaches von Seiten in den Adressraum des Prozesses eingebunden. Damit sind gültige

Adressen auf Speicherbereiche, die eigentlich gar nicht angefordert worden sind. Aber die auf

Grund des Adressraumkonzepts und des Zuteilungsverfahren einfach den Prozessen zur Verfügung gestellt werden

müssen. Wir könnten hier sagen, dass Verschwendung, die eigentlich durchs Betriebssystem zumindest

nicht zu vermieden werden kann, weil es an dem Zuteilungsverfahren und dem Adressraumkonzept

dann halt liegt. Also wir müssten dann schon von Paging abgehen, um sowas wie interne

Fragmentierung vermeiden oder dem vorbeugen zu können. Wichtig, viel gravierender ist

einfach die Tatsache, dass dieser lokale Verschnitt sehr wohl nutzbar ist für den jeweils

anfordernden Prozess, obwohl er diesen Bereich in einer Seite zum Beispiel gar nicht als

Speicherbereich angefordert hat. Das kann dann dazu führen, dass man dann einfach Adressierungsfehler,

Programmierfehler einfach nicht erkennt, weil die Memory Management Unit, die dahintersteckt,

halt immer die Seitengrünse denn respektiert und alles, was innerhalb einer Seite ist,

dann letztendlich als korrekt, als eine korrekte Adresse den halt eben doch begreift. Obwohl von

einer reinen Logik her ein bestimmter Bereich, nämlich meistens dann immer zum Ende der

Seite halt hin in so einem Fall, wenn mit Verschnitt gearbeitet werden muss, eben ein

logisch nicht nutzbarer Bereich existiert. Aber diese Adresse wird vom System den nicht als

eine fehlerhafte Adresse erkannt. Demgegenüber steht die externe Fragmentierung, die haben wir

typischerweise bei segmentierten Adressräumen, aber eben auch wiederum beim Halbierungsverfahren.

Hier stellen wir fest, dass wir eine anforderte Größe einfach nicht erfüllen können, weil jedes

einzelne Loch zu klein ist. Die Summe der Größen, wenn man die Löcher sozusagen nur aufsummiert,

die würde bedeuten, dass wir damit sehr wohl der angeforderten Größe entsprechend Rechnung

tragen können. Aber der Punkt ist ja der, dass diese Löcher dann eben nicht linear hintereinander

im Hauptspeicher angefordert sind. Wenn wir einen segmentierten Adressraum haben und wir

Segmente praktisch vergeben, dann müssen die Bites der Segmente oder auch die Seiten der

Segmente linear innerhalb des Segments angeordnet sein. Nun bezogen auf den Hauptspeicher mit einem

Teil eines Kapitels:
12.2 Speicherzuteilung

Zugänglich über

Offener Zugang

Dauer

00:13:17 Min

Aufnahmedatum

2021-01-12

Hochgeladen am

2021-01-12 13:19:45

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen